需求
之前一直在寻找一个合适的方式来记录工作的日常,例如问题记录、方案计划等等。但一直没有找到一直适合自己的工作流程。主要还是卡在记录
这一步骤。
记录 -> 记什么、记在哪里、怎么记。
以下将有几百字的废话,赶时间的可以直接下一章节
本项目已经上传到Github,需要的自行下载
为了解决记录问题,我尝试过Eventnote
、便签
、手写笔记本
等等。最后发现都因为各种各样的原因让我放弃了。
Eventnote
的编辑器、便签
的同步问题、手机笔记本
的搜索问题都在阻碍着我记录,知道最近遇到了hexo
,才发现原来记录是如此的简单美好。
个人认为一个良好的工作流程应该如下:
- 接收到需求
- 计划
- 实施
- 记录
- 归档
计划和记录都可以选择自己喜欢的MarkDown
工具,而我自然选择了MWeb
,包含了所有该有的功能,查询,文件库管理以及图床功能。
MWeb进行日常的编写查询归档等功能,写好了之后用Alfred
把指定的文章post到Hexo,其实也就是执行个脚本,把选中的MD处理一下,变成Hexo格式,然后就可以Post了,同时文件库用坚果云
来进行同步。当然,你也可以选择其他的同步软件,例如iCould`
Google Drive`等等。
可能有人疑惑,为什么不直接把MWeb的文件库改到Hexo的Post里面去,这样就可以直接编辑Hexo new出来的文件了啊。
正常新建的MWeb文件如图所示:
包含了标题,还有内容
但直接打开Hexo的MD,就会看不到Title,
效果如图所示:
虽然我不是处女座,但也忍受不了整个文件库里面都是这种—的标题显示,如果能接受的,你就可以直接用这种方式来处理了。
所以需求总结起来有以下几点。
-
新建文章 - 查询文章
- 增加Tag功能
- 自动发布到某篇文章到Hexo
新建文章
本来计划通过Alfred进行新建文章功能,查询了一下MWeb数据库
由于不知道文章ID的生成规则(只知道应该是用时间戳来标识文章ID的,但位数不对,多了4位),所以不敢轻易的往里面插入数据。
如果以后有这样的需求,再增加这个功能进去吧。
查询文章
具体实现参考了Github-MWeb-Alfred
主要也是通过查询数据库来实现的。具体可看原作者的Github-MWeb-Alfred
增加Tag功能
通过查看MWeb数据库
可以得知,要得到一个文章的所有tag,则需要连表查询,具体的sqlite 语句如下1
SELECT b.name FROM tag_article a,tag b WHERE ( a.aid='${fileid}' AND a.rid = b.id);
完整bash代码:searchtag.sh
1 |
|
自动发布某篇文章到Hexo
搜索文章->查询文章所有的tag->增加Hexo能识别的内容->发布
我在原作者的查询里面修改了一下,因为查询出来的结果是/Users/rinfon/Desktop/work/workstyle/blogfile/docs/15471063755188.md
这种路径的,而我需要一个文章的id和文章的title即可15471063755188;title
,代码如下:
1 |
|
为了让Hexo识别,增加了一下脚本1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41if [ ! -n "${HEXO_POST}" ] ;then
exit 1
fi
IFS=';' read -r -a array <<< "{query}"
path=${array[0]}
title=${array[1]}
title="${title/\# /}"
taglist=${array[2]}
cp "$path" "${HEXO_POST}/${title}.md"
cd "${HEXO_POST}"
#删除title
sed -i '' 1d ./"${title}.md"
sed -i '' '1i\'$'\n---\n' ./"${title}.md"
sed -i '' "1 a\
title: $title
" ./"${title}.md"
sed -i '' "2 a\
tag: [${taglist}]
" ./"${title}.md"
sed -i '' '3 a\'$'\n---\n' ./"${title}.md"
linecount=$(cat ./"${title}.md" | wc -l )
if [ $linecount -gt 11 ];then
sed -i '' "12 a\
<!--more-->
" ./"${title}.md"
fi
PATH=${HEXO_CMD_PATH}
PATH=${PATH}:${GIT_PATH}
hexo clean
hexo g
hexo d
遇到的问题
- alfred 执行git、hexo命令找不到问题
需要把git的命令路径和hexo路径填写在alfred的环境变量里面。不然执行会git和hexo的操作会失败。